package com.dj.msgtable.controller;

import com.alibaba.fastjson.JSONObject;
import com.fengwenyi.api_result.model.ResultModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Map;

/**
 * 用户接口
 *
 * @author Erwin Feng
 * @since 2020/4/11 21:43
 */
@Api(tags = "用户接口")
@Slf4j
@RestController
@RequestMapping(value = "/api/user",
        produces = MediaType.APPLICATION_JSON_VALUE,
        consumes = MediaType.APPLICATION_JSON_VALUE)
public class ApiUserController {
    public Integer numbers = 0;
//    /**
//     * 查询所有用户
//     *
//     * @param paramVO {@link UserParamVO}，过滤条件
//     * @return {@link ResultModel}，用户数组
//     */
//    @ApiOperation(value = "查询所有用户")
//    @GetMapping
//    public ResultModel<?> users(@Validated UserParamVO paramVO) {
//        System.out.println(paramVO.toString());
//        return ResultUtils.success(UserData.getUsers());
//    }
//
//    /**
//     * 查询指定用户
//     *
//     * @param uid 用户ID
//     * @return {@link ResultModel}，用户对象
//     */
//    @ApiOperation(value = "查询指定用户")
//    @GetMapping("/{uid}")
//    public ResultModel<?> user(@PathVariable Integer uid) {
//        return ResultUtils.success(UserData.get(uid));
//    }
//
//    /**
//     * 添加用户
//     *
//     * @param paramVO {@link UserParamVO}
//     * @return {@link ResultModel}，添加成功，返回用户信息
//     */
//    @ApiOperation(value = "添加用户")
//    @PostMapping
//    public ResultModel<?> user(@Validated @RequestBody UserParamVO paramVO) {
//        UserEntity userEntity = new UserEntity();
//        userEntity.setUid(paramVO.getId());
//        userEntity.setName(paramVO.getName());
//        userEntity.setSex(paramVO.getSex());
//        userEntity.setAge(paramVO.getAge());
//        UserData.set(userEntity);
//        return ResultUtils.success(userEntity);
//    }
//
//    /**
//     * 修改用户部分信息
//     *
//     * @param uid  用户ID
//     * @param name 用户名称
//     * @return {@link ResultModel}，修改成功，返回用户信息
//     */
//    @ApiOperation(value = "修改用户部分信息")
//    @PutMapping("/{uid}")
//    public ResultModel<?> user(@PathVariable Integer uid, String name) {
//        UserEntity userEntity = UserData.get(uid);
//        userEntity.setName(name);
//        UserData.set(userEntity);
//        return ResultUtils.success(userEntity);
//    }
//
//    /**
//     * 修改用户全部信息
//     *
//     * @param uid     用户ID
//     * @param paramVO {@link UserParamVO}
//     * @return {@link ResultModel}，修改成功，返回用户信息
//     */
//    @ApiOperation(value = "修改用户全部信息")
//    @PatchMapping("/{uid}")
//    public ResultModel<?> user(@PathVariable Integer uid, @Validated @RequestBody UserParamVO paramVO) {
//        UserEntity userEntity = UserData.get(uid);
//
//        userEntity.setName(paramVO.getName());
//        userEntity.setSex(paramVO.getSex());
//        userEntity.setAge(paramVO.getAge());
//        UserData.set(userEntity);
//        return ResultUtils.success(uid);
//    }
//
//    /**
//     * 删除指定用户
//     *
//     * @param uid 用户ID
//     * @return {@link ResultModel}
//     */
//    @ApiOperation(value = "删除指定用户")
//    @DeleteMapping("/{uid}")
//    public ResultModel<?> delete(@PathVariable Integer uid) {
//        UserData.delete(uid);
//        return ResultUtils.success();
//    }


    /**
     * 53KF信息接口api
     *
     * @param params {@link java.util.Map}
     * @return {@link ResultModel}，添加成功，返回cmd和TOKEN
     */
    @ApiOperation(value = "53KF信息API接口")
    @PostMapping(value = "/kf", consumes = "application/x-www-form-urlencoded")
    @ResponseBody
    public JSONObject kf(@RequestParam Map<String, String> params) throws UnsupportedEncodingException {

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("cmd", "OK");
        jsonObject.put("token", "e4f9a74366efb4768308862c0677710c");
        System.out.println(params.toString());
        String content = params.get("content");
        String keyWord = URLDecoder.decode(content, "UTF-8");
        System.out.println(keyWord);
        return jsonObject;
    }

    /**
     * 按顺序返回数值
     *
     * @param number List大小
     * @return {@link Integer}，余数
     */
    @ApiOperation(value = "按顺序返回数值")
    @PostMapping(value = "/number", consumes = "application/json; charset=UTF-8")
    @ResponseBody
    public JSONObject postNumbers(@RequestParam Map<String, String> params) {
//        @Param("number")
//        Integer number = Integer.valueOf(params.get("number"));
//        if (number>0){
        Integer tmp = numbers % 10;
        numbers++;
        System.out.println(numbers);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("number", tmp);

        return jsonObject;
//        }
//        return null;
    }

//    /**
//     * 按顺序返回数值
//     *
//     * @param number List大小
//     * @return {@link Integer}，用户对象
//     */
//    @ApiOperation(value = "按顺序返回数值")
//    @GetMapping( value = "/number/{number}")
////    @ResponseBody
//    public Integer getNumbers(@PathVariable Integer number) {
//        if (number>0){
//            Integer tmp = numbers%number;
//            numbers++;
//            return tmp;
//        }
//        return null;
//    }


    /**
     * 按顺序返回数值
     *
     *
     * @return {@link Integer}，用户对象
     */
    @ApiOperation(value = "按顺序返回数值")
    @PostMapping(value = "/title", consumes = "application/json; charset=UTF-8")
    @ResponseBody
    public JSONObject postTitle() {
        String title ="这是一个标题";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("title", title);
        return jsonObject;
    }







}
